
Lucas Mitchell
Automation Engineer

Otomsasi web memerlukan alat yang kuat dan mudah digunakan. Namun, situs web modern menerapkan langkah anti-bot yang canggih dan CAPTCHA yang dapat menghentikan skrip otomatisasi.
Kombinasi Helium dan CapSolver memberikan solusi yang elegan:
Bersama, alat-alat ini memungkinkan otomatisasi web yang mulus yang menangani tantangan CAPTCHA secara otomatis.
Panduan ini akan membantu Anda mencapai tiga tujuan inti:
Helium adalah perpustakaan Python yang membuat Selenium jauh lebih mudah digunakan. Ia menyediakan API tingkat tinggi yang memungkinkan Anda menulis otomatisasi browser dalam bahasa Inggris murni.
click("Kirim") alih-alih selektor XPath yang rumitwrite("Halo", into="Pencarian")# Instal Helium
pip install helium
# Instal perpustakaan requests untuk API CapSolver
pip install requests
from helium import *
# Mulai browser dan navigasi
start_chrome("https://wikipedia.org")
# Ketik ke kotak pencarian
write("Pemrograman Python", into=S("input[name='search']"))
# Klik tombol pencarian
click(Button("Cari"))
# Periksa apakah teks ada
if Text("Python").exists():
print("Artikel Python ditemukan!")
# Tutup browser
kill_browser()
CapSolver adalah layanan penyelesaian CAPTCHA otomatis berbasis AI yang mendukung berbagai jenis CAPTCHA. Ia menyediakan API sederhana yang memungkinkan Anda mengirim tantangan CAPTCHA dan menerima solusi dalam hitungan detik.
Bonus: Gunakan kode
HELIUMsaat mendaftar untuk menerima kredit bonus!
https://api.capsolver.comhttps://api-stable.capsolver.comSebelum menggabungkan Helium dengan CapSolver, otomatisasi web menghadapi beberapa tantangan:
| Tantangan | Dampak |
|---|---|
| Tantangan CAPTCHA | Dibutuhkan penyelesaian manual, menghentikan otomatisasi |
| Selektor kompleks | Selenium memerlukan selektor XPath/CSS yang panjang |
| Masalah waktu | Elemen tidak siap saat diakses |
| Keterbacaan kode | Skrip otomatisasi menjadi sulit dipelihara |
Integrasi Helium + CapSolver menyelesaikan tantangan ini dengan kode yang bersih dan mudah dibaca.
Pendekatan integrasi API memberi Anda kendali penuh atas proses penyelesaian CAPTCHA dan bekerja dengan semua jenis CAPTCHA.
pip install helium requests
import time
import requests
from helium import *
CAPSOLVER_API_KEY = "KUNCI_API_ANDA"
CAPSOLVER_API = "https://api.capsolver.com"
def create_task(task_payload: dict) -> str:
"""Buat tugas penyelesaian CAPTCHA dan kembalikan ID tugas."""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": task_payload
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Kesalahan CapSolver: {result.get('errorDescription')}")
return result["taskId"]
def get_task_result(task_id: str, max_attempts: int = 120) -> dict:
"""Poll hasil tugas hingga selesai atau timeout."""
for _ in range(max_attempts):
response = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
result = response.json()
if result.get("status") == "ready":
return result["solution"]
elif result.get("status") == "failed":
raise Exception(f"Tugas gagal: {result.get('errorDescription')}")
time.sleep(1)
raise TimeoutError("Penyelesaian CAPTCHA timeout")
def solve_captcha(task_payload: dict) -> dict:
"""Lengkapi alur kerja penyelesaian CAPTCHA."""
task_id = create_task(task_payload)
return get_task_result(task_id)
Anda juga dapat menggunakan ekstensi CapSolver dengan Helium untuk deteksi dan penyelesaian CAPTCHA otomatis.
config.js ekstensi:// Di folder ekstensi, edit: assets/config.js
var defined = {
apiKey: "KUNCI_API_CAPSOLVER_ANDA", // Ganti dengan kunci API Anda yang sebenarnya
enabledForBlacklistControl: false,
blackUrlList: [],
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
enabledForTurnstile: true,
// ... pengaturan lainnya
}
from helium import *
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_argument('--load-extension=/path/to/capsolver-extension')
start_chrome(options=options)
# Ekstensi akan secara otomatis mendeteksi dan menyelesaikan CAPTCHA
Catatan: Ekstensi harus memiliki kunci API yang valid dikonfigurasi sebelum dapat menyelesaikan CAPTCHA secara otomatis.
Contoh ini menyelesaikan reCAPTCHA v2 di halaman demo Google dengan deteksi kunci situs otomatis:
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "KUNCI_API_ANDA"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_recaptcha_v2(site_key: str, page_url: str) -> str:
"""Selesaikan reCAPTCHA v2 dan kembalikan token."""
# Buat tugas
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Kesalahan: {result.get('errorDescription')}")
task_id = result["taskId"]
print(f"Tugas dibuat: {task_id}")
# Poll hasil
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["gRecaptchaResponse"]
elif result.get("status") == "failed":
raise Exception(f"Gagal: {result.get('errorDescription')}")
print(" Menunggu solusi...")
time.sleep(1)
def main():
target_url = "https://www.google.com/recaptcha/api2/demo"
# Konfigurasi browser dengan anti-detect
options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
print("Memulai browser...")
start_chrome(target_url, options=options)
driver = get_driver()
try:
time.sleep(2)
# Deteksi kunci situs dari halaman
recaptcha_element = driver.find_element("css selector", ".g-recaptcha")
site_key = recaptcha_element.get_attribute("data-sitekey")
print(f"Kunci situs terdeteksi: {site_key}")
# Selesaikan CAPTCHA
print("\nMenyelesaikan reCAPTCHA v2 dengan CapSolver...")
token = solve_recaptcha_v2(site_key, target_url)
print(f"Dapatkan token: {token[:50]}...")
# Masukkan token
print("\nMemasukkan token...")
driver.execute_script(f'''
var responseField = document.getElementById('g-recaptcha-response');
responseField.style.display = 'block';
responseField.value = '{token}';
''')
print("Token dimasukkan!")
# Kirim formulir menggunakan sintaks sederhana Helium
print("\nMengirim formulir...")
click("Kirim")
time.sleep(3)
# Periksa keberhasilan
if "Verifikasi Berhasil" in driver.page_source:
print("\n=== BERHASIL! ===")
print("reCAPTCHA telah diselesaikan dan formulir telah dikirim!")
finally:
kill_browser()
if __name__ == "__main__":
main()
Uji sendiri:
python demo_recaptcha_v2.py
Cloudflare Turnstile adalah salah satu tantangan CAPTCHA yang paling umum. Berikut cara menyelesaikannya:
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "KUNCI_API_ANDA"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_turnstile(site_key: str, page_url: str) -> str:
"""Selesaikan Cloudflare Turnstile dan kembalikan token."""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Kesalahan: {result.get('errorDescription')}")
task_id = result["taskId"]
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["token"]
elif result.get("status") == "failed":
raise Exception(f"Gagal: {result.get('errorDescription')}")
time.sleep(1)
def main():
target_url = "https://situs-target-anda.com"
turnstile_site_key = "0x4XXXXXXXXXXXXXXXXX" # Temukan di sumber halaman
# Konfigurasi browser
options = ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
start_chrome(target_url, options=options)
driver = get_driver()
try:
# Tunggu Turnstile dimuat
time.sleep(3)
# Selesaikan CAPTCHA
print("Menyelesaikan Turnstile...")
token = solve_turnstile(turnstile_site_key, target_url)
print(f"Dapatkan token: {token[:50]}...")
# Masukkan token
driver.execute_script(f'''
document.querySelector('input[name="cf-turnstile-response"]').value = "{token}";
// Aktifkan callback jika tersedia
const callback = document.querySelector('[data-callback]');
if (callback) {{
const callbackName = callback.getAttribute('data-callback');
if (window[callbackName]) {{
window[callbackName]('{token}');
}}
}}
''')
# Kirim formulir menggunakan Helium
if Button("Kirim").exists():
click("Kirim")
print("Turnstile berhasil dilewati!")
finally:
kill_browser()
if __name__ == "__main__":
main()
reCAPTCHA v3 berbasis skor dan tidak memerlukan interaksi pengguna:
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "KUNCI_API_ANDA"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_recaptcha_v3(
site_key: str,
page_url: str,
action: str = "verify",
min_score: float = 0.7
) -> str:
"""Selesaikan reCAPTCHA v3 dengan tindakan dan skor minimum yang ditentukan."""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
"pageAction": action,
"minScore": min_score
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Kesalahan: {result.get('errorDescription')}")
task_id = result["taskId"]
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["gRecaptchaResponse"]
elif result.get("status") == "failed":
raise Exception(f"Gagal: {result.get('errorDescription')}")
time.sleep(1)
def main():
target_url = "https://situs-target-anda.com"
recaptcha_v3_key = "6LcXXXXXXXXXXXXXXXXXXXXXXXXX"
# Siapkan browser tanpa tampilan
options = ChromeOptions()
options.add_argument('--headless')
start_chrome(target_url, options=options)
driver = get_driver()
try:
# Selesaikan reCAPTCHA v3 dengan tindakan "login"
print("Menyelesaikan reCAPTCHA v3...")
token = solve_recaptcha_v3(
recaptcha_v3_key,
target_url,
action="login",
min_score=0.9
)
# Masukkan token
driver.execute_script(f'''
var responseField = document.querySelector('[name="g-recaptcha-response"]');
if (responseField) {{
responseField.value = '{token}';
}}
// Panggil callback jika ada
if (typeof onRecaptchaSuccess === 'function') {{
onRecaptchaSuccess('{token}');
}}
''')
print("reCAPTCHA v3 berhasil dilewati!")
finally:
matikan_browser()
if name == "main":
utama()
## 7. Praktik Terbaik
### 7.1. Konfigurasi Browser
Atur Chrome agar terlihat lebih seperti browser biasa:
```python
from helium import *
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--window-size=1920,1080')
mulai_chrome(options=options)
Gunakan sintaks sederhana Helium untuk kebanyakan operasi, tetapi akses Selenium saat diperlukan:
from helium import *
mulai_chrome("https://target-site.com")
# Gunakan Helium untuk interaksi sederhana
tulis("username", ke="Email")
tulis("password", ke="Password")
# Akses driver Selenium untuk operasi kompleks
driver = dapatkan_driver()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# Kembali ke Helium
klik("Login")
Hindari pembatasan kecepatan dengan menambahkan jeda acak:
import random
import time
def jeda_manusia(min_detik=1.0, max_detik=3.0):
"""Jeda acak untuk meniru perilaku manusia."""
time.sleep(random.uniform(min_detik, max_detik))
# Gunakan antara tindakan
klik("Berikutnya")
jeda_manusia()
tulis("data", ke="Input")
Selalu implementasikan penanganan kesalahan yang tepat untuk penyelesaian CAPTCHA:
def selesaikan_dengan_uliang(payload_tugas: dict, maks_ulang: int = 3) -> dict:
"""Men
Pelajari arsitektur pengambilan data web Rust yang dapat diskalakan dengan reqwest, scraper, pengambilan data asinkron, pengambilan data browser tanpa tampilan, rotasi proxy, dan penanganan CAPTCHA yang sesuai aturan.

Mengotomasi penyelesaian CAPTCHA dengan Nanobot dan CapSolver. Gunakan Playwright untuk menyelesaikan reCAPTCHA dan Cloudflare secara otomatis.
